In general, the basic input/output system (BIOS) of a processor system is implemented as software or firmware in the form of machine readable instructions that are stored in a non-volatile memory coupled to a processor. Following a reset operation or the application of power to the processor, the processor executes the BIOS instructions. Typically, the BIOS performs one or more hardware and software configuration and test activities prior to booting the operating system. The configuration activities carried out by the BIOS are responsible for establishing the manner in which hardware devices (e.g., disk drives, video controllers, keyboard, mouse, etc.) associated with the processor system interact with the operating system executed by the processor system. The test activities collect system configuration information that may be later used, for example, by the operating system to determine that hardware or devices associated with the system are ready for use and to facilitate debugging activities, configuration management activities, etc.
Typically, control code of the BIOS is stored in flash memory or flash random access memory (RAM). Flash memory is a type of non-volatile memory that is erased and reprogrammed in units of blocks. When the BIOS needs to be changed (i.e., rewritten), the flash memory may be written to in block sizes rather than byte. As a result, the flash memory is faster to update than an electrically erasable programmable read-only memory (EEPROM) that is erased and reprogrammed in bytes.
To store a backup of the BIOS components (e.g., code areas and data areas), the flash memory may be partitioned into a primary partition and a secondary partition. The secondary partition may be updated with an exact replica of BIOS components stored in the primary partition so that the content of the primary partition is reflected in the secondary partition (i.e., mirroring). However, some BIOS components may not change and therefore, may not need to be updated. Because not all BIOS components need to be mirrored (i.e., duplicated), the flash memory may be inefficiently used.